package com.imooc.reflect;

import java.lang.reflect.Method;
import java.util.ArrayList;

public class MethodDemo2 {

	public static void main(String[] args) {
		ArrayList list=new ArrayList();
		
		ArrayList<String> list1=new ArrayList<String>();
		list1.add("hello");
		//list1.add(1);错误的
		Class c1=list.getClass();
		Class c2=list1.getClass();
		System.out.println(c1==c2);
		//反射的操作都是编译之后的操作
		
		/*
		 * c1==c2结果返回true说明编译之后集合的泛型是去泛型化的
		 * 
		 * java中集合的泛型，是防止错误输入的，只在编译阶段有效
		 * 
		 * 绕过编译就无效了
		 * 
		 * 验证：通过方法的反射来操作，绕过编译
		 */
		
		try {
			Method method=c2.getMethod("add", Object.class);
			method.invoke(list1,100);//绕过编译操作绕过了泛型
			System.out.println(list1.size());
			System.out.println(list1);
//			for (String string : list1) {
//				System.out.println(stirng);
//			}此时不能使用该种方法遍历
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
